npx 명령어로 모델과 테이블 생성
✒️ 2025-05-26 15:12 내용 수정
- 참고 자료 : Sequelize Migrations, 조성철's Back-end Sequelize로 migration 하기
- Sequelize#sequelize config 수정하기을 진행하지 않고 VSC 터미널에서 진행했다.
- VSC 터미널에서
npm i sequelize sequelize-cli으로 ORM 관련 패키지를 설치한다. - 만약 mysql2가 설치되어 있지 않다면
npm i mysql2로 mysql2도 설치한다.

- VSC 터미널에서
npx sequelize init로 sequelize를 실행해 초기 설정을 해준다.

- 명령어 생성 후 생긴 config 폴더의 config.json 파일에서 DB를 용도별로 설정할 수 있다.
- 개발을 위한 db 연결을 설정하는데, 기존에 없던 db라면 새로 생성해준다.
- development : 개발을 위한 DB
- test : 테스트를 위한 DB
- production : 실제 배포나 서비스를 위한 DB
{
"development": { // 개발용 DB
"username": "사용자",
"password": "비밀번호",
"database": "DB이름",
"host": "127.0.0.1", // localhost
"dialect": "mysql",
"port" : "3306" // port가 기본값이 아니라면 지정 필요
},
"test": { // 테스트용 DB
"username": "사용자",
"password": "비밀번호",
"database": "DB이름",
"host": "127.0.0.1", // localhost
"dialect": "mysql"
},
"production": { // 배포 및 서비스를 위한 DB
"username": "사용자",
"password": "비밀번호",
"database": "DB이름",
"host": "127.0.0.1", // localhost
"dialect": "mysql"
}
}

- VSC 터미널에서
npx sequelize db:create --env development를 입력해 설정 내용으로 db를 생성한다.- 사진은 sequelize db 설정 시 auth_gssapi_client 에러에서 문제 해결 화면과 동일한 결과라 이미지를 그대로 가져왔다.


- VSC 터미널에서
npx sequelize model:generate --name 모델이름 --attributes 필드이름:데이터타입,필드이름:데이터타입을 작성해서 모델을 생성한다.- attributes의 필드들을 추가할 때 쉼표 사이에 공백이 없도록 작성한다.
- 성공적으로 명령어가 실행되었다면 migrations 폴더에 생성된 모델 데이터가 생성된다.
// 예시 모델
npx sequelize model:generate --name Member --attributes name:string,team:string,position:string,email:string,phone:string,admissionDate:date,birthday:date,profileImage:string

- model 파일을 확인하면 터미널에서 작성한 내용이랑 동일한 설정들이 나와있고, up/down 함수가 있다. 이 파일을 수정해서 추가적으로 생성할 테이블의 컬럼 등을 편집할 수 있다.
- up : model 생성
- down : model 제거

- date 타입들의 기본값을 현재 값으로 지정하기 위해
defaultValue : Sequelize.fn('now')를 추가한다.- Sequelize에서는 MySQL에서 지원하는 함수를 사용할 수 있다.
Sequelize.fn('함수이름')으로 원하는 함수를 사용한다.

- 이제 터미널에
npx sequelize db:migrate를 입력해서 Model을 기반으로 테이블을 이식(Migration)한다.- 가장 최근에 이식한 테이블을 되돌린다면
npx sequelize-cli db:migrate:undo를 사용한다. - 모든 이식을 되돌린다면
npx sequelize-cli db:migrate:undo:all을 사용한다.
- 가장 최근에 이식한 테이블을 되돌린다면

- MySQL workbench에 접속하고 4번에서 생성해둔 DB에 테이블을 확인해보면 Node에서 만들었던 테이블과 테이블 컬럼들을 확인할 수 있다.

- sequelizemeta에는 테이블 생성 전에 만들었던 모델의 파일 명이 있다.
